package grupo1.fotomultas.Fotomultas.Categorias;

import grupo1.fotomultas.Fotomultas.Vehiculo;
import grupo1.fotomultas.Fotomultas.Infracciones.Infraccion;
import grupo1.fotomultas.Fotomultas.Notificaciones.NotificacionConfiguracion;

public class Frecuente extends Categoria {
	

	protected static Frecuente instance = null;
	private static final int aniosParaQuitarCategoria = 0;
	private static final int mesesParaQuitarCategoria = 6;
	private static final int diasParaQuitarCategoria = 0;

	private static final int CANTIDAD_INFRACCIONES_PARA_INHABILITAR = 5;	

	public static Frecuente Instance(){
		if (instance == null) instance = new Frecuente();
		return instance;
	   } 
	
	public static int getCantidadInfraccionesParaInhabilitar() {
		return CANTIDAD_INFRACCIONES_PARA_INHABILITAR;
	}

	public void verificarCategoriaVehiculo(Vehiculo vehiculo) {
		if(vehiculo.cantidadDeInfracciones() >= getCantidadInfraccionesParaInhabilitar()) 
			vehiculo.agregarCategoria(this);
	}

	public void notificar(Infraccion infraccion) {
		infraccion.enviarNotificacion();
	}
	
	public String toString(){
		return "Frecuente";
		
	}

	@Override
	protected void enviarNotificacion(NotificacionConfiguracion notiConfig,
			Infraccion infraccion) {
		//No hace nada por que reimplementa el notificar
	}

	@Override
	protected void crearNotificacionesConfiguracion() {
		//No hace nada por que reimplementa el notificar
	}

	@Override
	protected void verificarCategoriaExistenteVehiculo(Vehiculo vehiculo) {
		if(ausenciaDeInfraccionesEnUnPeriodo(vehiculo,aniosParaQuitarCategoria, mesesParaQuitarCategoria, diasParaQuitarCategoria))
			vehiculo.removerCategoria(this);
	}
	
}
